package com.study.design.memento.example.whileMemento;

/**
 * 备忘录模式 白箱 测试类
 * 窄接口：管理者(Caretaker)对象（和其他发起人对象之外的任何对象）
 * 看到的是备忘录的窄接口(narror Interface)，
 * 这个窄接口只允许他把备忘录对象传给其他的对象。
 * 宽接口：与管理者看到的窄接口相反，发起人对象可以看到一个宽接口(wide Interface)，
 * 这个宽接口允许它读取所有的数据，以便根据这些数据恢复这个发起人对象的内部状态。
 */
public class WhiteMementoClient {
    public static void main(String[] args) {
        System.out.println("--------------大战Boss前------------------------");
        //大战Boss前
        GameRole gameRole = new GameRole();
        gameRole.initState();
        gameRole.stateDisplay();

        //保存进度.角色状态管理类
        RoleStateCaretaker roleStateCaretaker = new RoleStateCaretaker();
        roleStateCaretaker.setRoleStateMemento(gameRole.saveState());

        System.out.println("--------------大战Boss后------------------------");
        //大战Boss 损耗严重
        gameRole.fight();
        gameRole.stateDisplay();

        System.out.println("--------------满血复活------------------------");
        gameRole.recoverState(roleStateCaretaker.getRoleStateMemento());
        gameRole.stateDisplay();
    }
}
